package com.bit.cfdi.web.services;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

import com.bit.cfdi.web.dao.ImpuestoDAO;
import com.bit.cfdi.web.domain.Giro;
import com.bit.cfdi.web.domain.Impuesto;
import com.bit.cfdi.web.domain.Negocio;

@Service
public class ImpuestoService {
	
	@Autowired ImpuestoDAO impuestoDAO;
	
	public List<Impuesto> getAll() throws DataAccessException {
			return impuestoDAO.getAll();
	}
	
	public void save(Impuesto impuesto) throws DataAccessException {
		impuestoDAO.save(impuesto);
	}

	public Impuesto getBySiglaTasa(String sigla, double tasa) throws DataAccessException {
		return impuestoDAO.getBySiglaTasa(sigla, tasa);
	}

	public List<Impuesto> getImpuestoByGiro(Giro giro) throws DataAccessException {		
		return impuestoDAO.getImpuestoByGiro(giro);
	}

	public List<Impuesto> getImpuestoByNegocio(Negocio negocio) throws DataAccessException {		
		return impuestoDAO.getImpuestoByNegocio(negocio);
	}

	public List<Impuesto> getImpuestosCategoria(String categoria, 
			String tipoImpuesto) throws DataAccessException {		
		return impuestoDAO.getImpuestosCategoria(categoria, tipoImpuesto);
	}

	public Impuesto getImpuestobyGiro(String nombre,
			String sigla, Giro giro) throws DataAccessException {		
		return impuestoDAO.getImpuestobyGiro(nombre, sigla, giro);
	}

	public Impuesto getImpuestobyNegocio(String nombre, String sigla,
			Negocio negocio) throws DataAccessException {
		return impuestoDAO.getImpuestobyNegocio(nombre, sigla, negocio);
	}
	
	public Impuesto getImpuestoCatalogo(String categoria, 
			String tipoImpuesto, String nombreImpuesto, 
			String siglaImpuesto) throws DataAccessException {
		return impuestoDAO.getImpuestoCatalogo(categoria, 
				tipoImpuesto, nombreImpuesto, siglaImpuesto);
	}
	
	public List<Impuesto> getImpuestoByNegSiglas(Negocio negocio, 
			String sigla) throws DataAccessException {
		return impuestoDAO.getImpuestoByNegSiglas(negocio, sigla);
	}

	public List<Impuesto> getByStatusAndNegocio(Integer status, 
			Negocio negocio) throws DataAccessException {
		return impuestoDAO.getByStatusAndNegocio(status, negocio);
	}
	
	public List<Impuesto> getImpuestobyCategoriaNegocio(String categoria,
			Negocio negocio,Integer status) throws DataAccessException {
		return impuestoDAO.getImpuestobyCategoriaNegocio(categoria, negocio,status);
	} 
	
	public List<Impuesto> getImpBySiglasNegocioDefault(Negocio negocio,String sigla,
			double tasa,String tipo,String categoria) throws DataAccessException {
		return impuestoDAO.getImpBySiglasNegocioDefault(negocio, sigla,tasa,tipo,categoria);
	}

	public Impuesto getByTipoSiglasTasa(final String tipo, final String siglas, 
			final double tasa) {
		return impuestoDAO.getByTipoSiglasTasa(tipo, siglas, tasa);
	}
}
